#!/usr/bin/python3
#coding:utf-8
import rospy
from std_msgs.msg import *

from 包名.msg import * #导入某包中的全部msg
from 包名.srv import * #导入某包中的全部srv
class Example:  #更改变量名
    def __init__(self):
        rospy.init_node('example_node', anonymous = True)  #更改节点名
        self.example_param = rospy.get_param("/example")   #获取参数
        self.rate = rospy.Rate(20)                         #一般为20hz

        # topic相关 msg means message
        rospy.Subscriber("/example_topic",Int32,self.example_topic_cb)  #cb means callback 订阅topic
        self.example_topic = rospy.Publisher("/example_topic",Int32,queue_size=1)   #创建topic
        self.example_topic.publish(param)  #发送topic信息
        # topic相关

        # service相关  srv means service
        rospy.wait_for_service("/example_service") #等待ros局域网内服务启用（存在该服务）
        self.example_srv = rospy.ServiceProxy('/example_service',ExampleSrv)  #订阅服务
        rospy.Service('/example_service',ExampleSrv,self.example_srv_func)  #创建服务

    def example_topic_cb(self,msg):
        msg.data 或者 msg.成员

    def example_srv_func(self,req):
        # 请求为srv文件名+Request 回应为srv文件名+Response
        req 即为 ExampleSrvRequest类

        resp = ExampleSrvResponse()  #ExampleSrvResponse类
        return resp

    def MainLoop(self):
        while not rospy.is_shutdown():
            self.rate.sleep()   #循环直到节点挂了
            

if __name__ == '__main__':
    node1 = Example()  #改一下类名，使之对应
    node1.MainLoop()
